home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Shareware Gold
/
Windows Shareware Gold Volume 3 Number 1 (Sherburne Knowledge Systems) (1991).iso
/
apps
/
f1534
/
adimport.wbt
< prev
next >
Wrap
Text File
|
1991-07-31
|
5KB
|
108 lines
:whatfile
infile="*.in" ;Create template for a dialog box to prompt user
hFP=FileOpen("adimport.dlg","WRITE")
FileWrite(hFP,"[infile$ ]")
FileWrite(hFP,"[infile\ ]")
FileWrite(hFP,"[infile\ ]")
FileWrite(hFP,"[infile\ ] [i^1Tab delimited file ]")
FileWrite(hFP,"[infile\ ] [i^2Comma delimited file ]")
FileWrite(hFP,"[infile\ ]")
FileWrite(hFP,"[infile\ ]")
FileWrite(hFP,"[infile\ ]")
FileClose(hFP)
DialogBox("AddrMan Converter","adimport.dlg") ;Pop up ye olde dialog box
CRLF=strcat(num2char(13),num2char(10)) ;define a CRLF
DELIMIT=Num2Char(9) ;setup delimiter
DELIMITNAME="TABs" ;and a name for the same
if i==2 then DELIMIT="," ;nope, delimites are really commas
if i==2 then DELIMITNAME="COMMAs" ; and they are called commas
count=0 ;initialize record count to zero
infile = StrUpper(infile) ;Make file name all uppercase
If FileExist(infile) == @FALSE Then Goto nofile ;Ooops can't find file
if WinExist("Address") then goto runnin
Message("AddrMan Converter","Address Manager not running. Get it going.")
Exit
:runnin
WinActivate("Address") ;Activate Addrman
f = FileOpen(infile, "READ") ;Open file for input
:nextline
l = FileRead(f) ;Read a line
If (l == "*EOF*") Then Goto done ;All done???
if count>0 then goto contin
dummy=strscan(l,DELIMIT,1,@FWDSCAN) ;Check first line. Can we even find a delimiter?
if dummy!=0 then goto doit ;Delimiter found. All is hunky dorey
;No delimiter. User probably chose wrong file delim type
Message("AddrMan Converter","%DELIMITNAME% not found in file %CRLF%Probably specified incorrectly")
FileClose(f) ;Close file
goto whatfile ; and let user try, try again
:doit
Sendkey("!ea!u!l") ;all looks good, get data entry dialog box up
:contin
linepointer=1 ;Initialize linepointer var
maxpointer=strlen(l) ;Determine end of line
varssent=0 ;No vars sent to dialog box for this line (yet)
:nextvar
thischar=strsub(l,linepointer,1) ;Get next character
if thischar=='"' then goto scan4quote ;Is it a " if so, goto scan4quote
nextpointer=strscan(l,DELIMIT,linepointer,@FWDSCAN) ;go find the next delimiter
if nextpointer==0 then goto doneline ;Next delimiter no exist, must be doned
thisvar=strsub(l,linepointer,nextpointer-linepointer) ;pick out the current variable
linepointer=nextpointer+1 ;update current line pointer var
goto sendit
:scan4quote
nextpointer=strscan(l,'"',linepointer+1,@FWDSCAN) ;Find next "
if nextpointer==0 then goto doneline ;NO " ??????, oh well we must be done with this line
thisvar=strsub(l,linepointer+1,nextpointer-linepointer-1) ;pick out the current variable
linepointer=nextpointer+2 ;Update the current line pointer
:sendit
if strlen(thisvar)==0 then goto nextone
;send string to the sendkey cleaners.....cleanup special characters..
thisvar=strreplace(thisvar,'{','{{}')
thisvar=strreplace(thisvar,'~','{~}')
thisvar=strreplace(thisvar,'!','{!}')
thisvar=strreplace(thisvar,'^','{^}')
thisvar=strreplace(thisvar,'+','{+}')
SendKey(thisvar) ;Pop variable into the clipboard
:nextone
SendKey("{TAB}") ;Splat clipboard data into field, and move to next field
varssent=varssent+1 ;Increment count of vars splatted
if varssent>=13 then goto doneline ;Have we filled the dialog box...If so ignore rest
if linepointer>maxpointer then goto doneline ; if no data left one line....must be done....
goto nextvar ;process next field
:doneline
count=count+1 ;Increment record count
SendKey("!a") ;Use SendKey push the "Another" button
Goto nextline ;And do the next record
:done
FileClose(f) ;All doned, close file
Message("Processing complete", "%count% records imported from %infile%")
Exit ;Bye Bye